// BinarySearch.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>
#include <vector>
using namespace std;

int BinarySearch(const vector<int>& nums, int target) {
    //指向首位两个元素
    int start = 0;
    int end = nums.size() - 1;

    while (start < end) {
        //指向数列中间元素
        int mid = (start + end) / 2;
        if (nums[mid] == target)
            return mid;


        /*
        * 1. 当 mid 元素小于 target 时, start = mid + 1
        * 2. 当 mid 元素大于 target 时, end = mid - 1
        */
        if (nums[mid] < target)
            start = mid + 1;

        else
            end = mid - 1;
    }

    if (nums[start] == target)
        return start;

    else
        return -1;
}

int main()
{
    /* 输入示例:
    *  1 2 3 4 5 6 7 8  (cin >> num)
    *  ^Z (ctrl + z)
    *  1    (cin >> target)
    */

    vector<int> nums;
    int num;
    while (cin >> num) {
        nums.push_back(num);
    }

    /*
    * 通常情况会进行输入读取一个数值，前提是cin正常。如果cin被核定为false，则cin就不会被执行啦
    * 
    * 解决方法：
    *   我们要对cin进行恢复，使其恢复正常状态。使用cin.clear()和cin.sync()可以恢复正确状态
    *
    * 补充：
    *   cin被核定为false的情况：（1）遇到结束符：（2）无效输人
    */


    cin.clear();
    cin.sync();

    int target;
    cin >> target;
    cout << BinarySearch(nums, target);
}
